home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
install
/
hewin.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
7KB
|
247 lines
/*************************************************************************
* HEwin install
*************************************************************************/
char *HewinMsg[8] =
{
"HEwin は,テキストエディタ,通信機能,DOS コンソール,TIFFビュワー",
"等を備えたマルチウィンドゥ環境で動作するアプリケーションです。",
"※ メモリ:要4Mバイト(推奨6~10Mバイト以上)",
"",
" ディスク容量の関係から、フロッピィディスクにはすべてのファイルは ",
" 複写できません(必要最小限のファイルのみが複写されます)。",
NULL
};
char *HewinFile1[12] = /* インストールするファイル */
{
"hewin.exp", /* 最初は必ず実行プログラムを置く */
"*.dll",
"hewin.cci",
"hewin.icn",
"hewin.tif",
"tdptmp.tbl",
"*.doc",
"*.hlp",
NULL
};
char *HewinFile2[8] = /* インストールするファイル(EXP) */
{
/* "lhx.exp", */
"cci.exp",
"rz.exp",
"sz.exp",
NULL
};
char *HewinFile3[5] = /* インストールするファイル(CCI) */
{
"makecci.bat",
"cpp.exe",
"*.h",
"*.cci",
NULL
};
/*************************************************************************
* インストール
*************************************************************************/
int hewin_install()
{
int i, ret, len;
char *btn;
char *fdl;
int drv;
unsigned int totalFree, writeFree;
char *p, tmp[256], path[256], ccipath[256], whare[256], prog[256];
short frm[4];
char *aplname, *dirname, *srcdir;
aplname = "HEwin";
dirname = "HEWIN";
srcdir = " :/TAROPYON/HEWIN/";
srcdir[0] = StartPath[0];
dsp_init(HewinMsg);
_RETRY:
DSP_writePage(1);
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_LEFT, 2, btn,
" %s のインストールを行いますか? ", aplname );
MNU_freeBtn( btn );
if ( ret != 1 )
return (0);
DLG_tmpMsgTime( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, "\n インストール先に移動してください。 \n" );
/* インストール */
if ( (fdl = FDL_open(0)) == NULL )
return (-1);
FDL_set_title( fdl,"インストール先指定");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
if ( ret == NORMAL )
{
drv = FDL_get_drv(fdl);
strcpy( whare, FDL_get_whare(fdl) );
}
FDL_close(fdl);
if ( ret )
goto _RETRY;
/* ディスク容量のチェック ----------------------------------------*/
if ( FS_getDskFree( drv, &totalFree, &writeFree) )
{
DLG_tmpMsgTime( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
3, " ディスクの準備ができていません。 " );
goto _RETRY;
}
if ( writeFree < 1167*1024 || (drv > 1 && writeFree < 3*1024*1024) )
{
ret = MNU_sure( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
" %c: Disk free space %u [%s] byte(s) \n ディスク容量が足りません。 ",
drv + 'A', writeFree, getSizMsg(NULL,writeFree) );
if ( ret != MENU_SURE_OK )
goto _RETRY;
}
sprintf( tmp, "%c:/%s", drv+'A', whare );
len = strlen(tmp);
if ( len > 0 && tmp[len-1] != '/' && tmp[len-1] != '\\' )
{
tmp[len++] = '/';
tmp[len] = '\0';
}
sprintf( path, "%s%s", tmp, dirname );
ret = FS_isFileExist(path);
if ( ret == 0 )
{ /* ファイルは存在しない */
/* ディレクトリ作成確認 */
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "MKDIR : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
" インストール先にディレクトリを作成します。 \n%s", path );
MNU_freeBtn( btn );
if ( ret != 1 )
goto _RETRY;
FS_mkdir(path);
} else if ( ret == 1 )
{ /* ファイルが存在 */
MNU_sure( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
" %s \n インストール先に同名のファイルが存在しています。 ", path );
goto _RETRY;
}
/* インストール先確認 --------------------------------------------*/
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
"インストール先 : %s\n Disk free space %u [%s] byte(s) \n\n インストールを行いますか? ",
path, writeFree, getSizMsg(NULL,writeFree) );
MNU_freeBtn( btn );
if ( ret != 1 )
goto _RETRY;
/* 複写元にカレントを移動 */
sprintf( tmp, "%s.", srcdir );
FS_chdrv( toupper(srcdir[0]) - 'A' );
FS_chdir( tmp );
/* 本体及び関連ファイル */
ret = i = 0;
while ( (p = HewinFile1[i++]) != NULL && ret == 0 )
{
SYL_puts( C_INFO, "copy %s", p );
ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, path, "" );
}
if ( drv > 1 && ret == NORMAL )
{ /* 外部ユーティリティ(フロッピィにはインストールしない) */
ret = i = 0;
while ( (p = HewinFile2[i++]) != NULL && ret == 0 )
{
SYL_puts( C_INFO, "copy %s", p );
if ( FS_isFileExist(p) == 0 )
continue;
ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, path, "" );
}
}
if ( drv > 1 && ret == NORMAL )
{ /* CCI(フロッピィにはインストールしない) */
/* 複写元にカレントを移動 */
sprintf( tmp, "%sCCISRC", srcdir );
FS_chdrv( toupper(srcdir[0]) - 'A' );
FS_chdir( tmp );
sprintf( ccipath, "%s/CCISRC", path );
if ( (ret = FS_isFileExist(tmp)) == 0 )
{
FS_mkdir(ccipath);
} else if ( ret == 1 )
{
MNU_sure( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
" %s \n インストール先に同名のファイルが存在しています。 ", ccipath );
goto _RETRY;
}
ret = i = 0;
while ( (p = HewinFile3[i++]) != NULL && ret == 0 )
{
SYL_puts( C_INFO, "copy %s", p );
ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, ccipath, "" );
}
}
if ( ret )
{ /* error */
MNU_sure( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
"FILE COPY ERROR\n インストールに失敗しました。 " );
return (-1);
}
/* アイテム登録 */
SYL_puts( C_INFO, "アイテム登録" );
sprintf( ItmPath, "%c:\\tmenu.itm", drv+'A');
if ( FS_isFileExist(ItmPath) == 0 )
{ /* アイテムファイルの作成 */
ITM_CreateItemFile(ItmPath);
}
item_set_newpos( frm );
ret = MNU_sure( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER,
" item file %s \n アイテム登録を行います。 ", ItmPath );
if ( ret == MENU_SURE_OK )
{
sprintf( tmp, "%s/%s", path, HewinFile1[0]);
FS_unix2dos( prog, tmp+2 );
FS_strupr( prog ); /* 大文字に変換 */
ITM_AddAplItem( ItmPath, 0, 1024, "HEwin", prog, "", 2, frm );
}
SYL_puts( C_INFO, "***** Completed *****");
DLG_tmpMsgTime( DlgX0, DlgY0,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, " インストール終了しました。 " );
return (0);
}